package LeetCode刷题.之前的算法;

import java.util.HashMap;
import java.util.Map;

public class HashmapUse {
    public static void main(String arg[]){
        System.out.println(firstUniqChar("abaccdeff"));
    }
    public static char firstUniqChar(String s) {
//        HashMap<Character, Boolean> dic = new HashMap<>();
//        char[] sc = s.toCharArray();
//        for (char c : sc)
//            dic.put(c, !dic.containsKey(c));
//        for (char c : sc)
//            if (dic.get(c)) return c;
//        return ' ';
//        若 dic 中 不包含 键(key) c ：则向 dic 中添加键值对 (c, True) ，代表字符 c 的数量为 11 ；
//        若 dic 中 包含 键(key) c ：则修改键 c 的键值对为 (c, False) ，代表字符 c 的数量 > 1>1 。
//        查找数量为 11 的字符： 遍历字符串 s 中的每个字符 c ；
//        若 dic中键 c 对应的值为 True ：，则返回 c 。

        Map<Character,Boolean> map=new HashMap<>();
        char S[]=s.toCharArray();
        for(char c:S){
            map.put(c,!map.containsKey(c));//放入每个字符，同时判断里面是否有该字符
            //如果存在c，则修改其value为false；如果不存在就添加c，同时修改其value为true
        }
        for(char c:S){
            if(map.get(c)){
                return c;
            }
        }
        return ' ';
    }
}
